--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / vendor / rns_filesync / tests / unit / test_paths.py
Displaying Raw • Download
vendor/rns_filesync/tests/unit/test_paths.py f89f91e267d8079e6dec86fa9d3139ddbe7f64ce (f89f91e2) Text, 1.50 KB
T8b949e"""Unit tests for path jail."""
Tff7b72import T7ee787os
Tff7b72import T7ee787pytest
Tff7b72from T7ee787rns_filesyncT7ee787.T7ee787paths Tff7b72import Tb4b4b4(
Te6edf3PathJailErrorTb4b4b4,
Te6edf3normalize_relpathTb4b4b4,
Te6edf3relative_to_rootTb4b4b4,
Te6edf3resolve_under_rootTb4b4b4,
Tb4b4b4)
Te6edf3pytestmark Tff7b72= Te6edf3pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffunit
Tff7b72def Td2a8fftest_normalize_relpath_okTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3normalize_relpathTb4b4b4(Ta5d6ff"Ta5d6ffa/b.txtTa5d6ff"Tb4b4b4) Tff7b72== Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffnormpathTb4b4b4(Ta5d6ff"Ta5d6ffa/b.txtTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8fftest_normalize_rejects_absoluteTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Te6edf3PathJailErrorTb4b4b4)Tb4b4b4:
Te6edf3normalize_relpathTb4b4b4(Ta5d6ff"Ta5d6ff/etc/passwdTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8fftest_normalize_rejects_traversalTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Te6edf3PathJailErrorTb4b4b4)Tb4b4b4:
Te6edf3normalize_relpathTb4b4b4(Ta5d6ff"Ta5d6ff../secretTa5d6ff"Tb4b4b4)
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Te6edf3PathJailErrorTb4b4b4)Tb4b4b4:
Te6edf3normalize_relpathTb4b4b4(Ta5d6ff"Ta5d6ffa/../../bTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8fftest_normalize_rejects_nullTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Te6edf3PathJailErrorTb4b4b4)Tb4b4b4:
Te6edf3normalize_relpathTb4b4b4(Ta5d6ff"Ta5d6ffaTffea00\x00Ta5d6ffbTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8fftest_resolve_under_rootTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3root Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffsyncTa5d6ff"
Te6edf3rootTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3nested Tff7b72= Te6edf3root Tff7b72/ Ta5d6ff"Ta5d6ffdirTa5d6ff"
Te6edf3nestedTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3target Tff7b72= Te6edf3nested Tff7b72/ Ta5d6ff"Ta5d6fffile.txtTa5d6ff"
Te6edf3targetTff7b72.Td2a8ffwrite_textTb4b4b4(Ta5d6ff"Ta5d6ffxTa5d6ff"Tb4b4b4)
Te6edf3resolved Tff7b72= Te6edf3resolve_under_rootTb4b4b4(Tffa657strTb4b4b4(Te6edf3rootTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffdir/file.txtTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3resolved Tff7b72== Tffa657strTb4b4b4(Te6edf3targetTff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_resolve_blocks_escapeTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3root Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffsyncTa5d6ff"
Te6edf3rootTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3outside Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffoutside.txtTa5d6ff"
Te6edf3outsideTff7b72.Td2a8ffwrite_textTb4b4b4(Ta5d6ff"Ta5d6ffnopeTa5d6ff"Tb4b4b4)
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Te6edf3PathJailErrorTb4b4b4)Tb4b4b4:
Te6edf3resolve_under_rootTb4b4b4(Tffa657strTb4b4b4(Te6edf3rootTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff../outside.txtTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8fftest_relative_to_rootTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3root Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffsyncTa5d6ff"
Te6edf3rootTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Te6edf3path Tff7b72= Te6edf3root Tff7b72/ Ta5d6ff"Ta5d6ffx.binTa5d6ff"
Te6edf3pathTff7b72.Td2a8ffwrite_bytesTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ff1Ta5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3relative_to_rootTb4b4b4(Tffa657strTb4b4b4(Te6edf3rootTb4b4b4)Tb4b4b4, Tffa657strTb4b4b4(Te6edf3pathTb4b4b4)Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffx.binTa5d6ff"
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────